package com.hyj.ecp.backstage.interceptor;



import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.json.simple.JSONObject;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.hyj.ecp.backstage.sys.bean.vo.User;
import com.hyj.ecp.common.constant.SysConstant;


public class LoginInterceptor implements HandlerInterceptor {

	Logger logger = Logger.getLogger(LoginInterceptor.class); 
	
 
	
	/** 
	 * 在DispatcherServlet完全处理完请求后被调用  
	 *  
	 *   当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() 
	 */

	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		//System.out.println("====================>> afterCompletion");
         
	}

	 //在业务处理器处理请求执行完成后,生成视图之前执行的动作   
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		//System.out.println("====================>> postHandle");
	}

    /** 
     * 在业务处理器处理请求之前被调用 
     * 如果返回false 
     *     从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 
     *  
     * 如果返回true 
     *    执行下一个拦截器,直到所有的拦截器都执行完毕 
     *    再执行被拦截的Controller 
     *    然后进入拦截器链, 
     *    从最后一个拦截器往回执行所有的postHandle() 
     *    接着再从最后一个拦截器往回执行所有的afterCompletion() 
     */  

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
			Object arg2) throws Exception {
	   User u =(User) request.getSession().getAttribute("user");
	   System.out.println("===================="+u);
	    
	   if(u==null){
    		OutputStream out =  response.getOutputStream();
    		String s = " <script type='text/javascript'>top.location.href='/ecp/login.jsp';</script>  ";
			out.write(s.getBytes("UTF-8"));
			out.flush();
			out.close();
    		
	   		return false;// 没有登入 
	   }
	   return true;
	}

}
